<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>函数类型</title>
    <script>
        // 定义的函数变量数量可以与调用函数传递的参数数量不一致
        // 因为调用函数时传递的参数并不是方法中的参数直接接收
        // 而是在JS中通过内置对象arguments接收的
        // function add(a,b,c){
        //     console.log(a+b+c);
        // }
        function add(){
            console.log(arguments);
            let a = arguments[0];
            let b = arguments[1];
            let c = arguments[2];
            console.log("a:"+a+",b:"+b+",c:"+c);
            console.log(a+b+c);
        }
        function f1(){
            let f1 = function(){
                console.log("这是函数类型");
            }
            console.log(typeof f1);
        }

        function f2(){
            let f1 = fn;
            console.log(typeof f1);
        }

        function fn(){
            console.log("这是函数类型")
        }

        function f3(){
            // 支持Lambda表达式
            // Java: () -> {}
            // let f1 = () => {
            //     console.log("这是Lambda表达式函数")
            // };
            // let f1 = () => {
            //     return "admin";
            // }
            let f1 = () => "admin";
            console.log(typeof f1);
            console.log(f1());

            let f2 = a => a;
            console.log(f2("admin"));
        }
    </script>
</head>
<body>
<button onclick="add(1,2)">函数类型</button><br>
<button onclick="f1()">函数定义方式一</button><br>
<button onclick="f2()">函数定义方式二</button><br>
<button onclick="f3()">函数定义方式三</button><br>
</body>
</html>